<?php 
class Subrubro extends AppModel {
    var $name = 'Subrubro';    
 
    public $belongsTo = array(
        'Rubro' => array(
            'className' => 'Rubro',
            'foreignKey' => 'rubro_id'
        )
    );
    
    var $validate = array(
        'descripcion' => array(            
            // solo letras, espacios y numeros enteros - i:case insensitive
            // longitud: minimo 3 maximo 200 caracteres
            'rule'    => '/^[a-z0-9\s]{3,200}$/i',            
            'allowEmpty' => false,
            'message' => 'La descripción no es válida'
        ),
        'codigo' => array(
            'regla1' => array( 
                // solo letras, y numeros enteros - i:case insensitive
                // longitud: minimo 1 maximo 10 caracteres
                'rule'    => '/^[a-z0-9]{1,10}$/i',
                'allowEmpty' => false,
                'message' => 'El código no es un valor válido.'
            ),
            // custom rule para controlar duplicados
            'regla2' => array( 
                'rule' => array('existeOtro'),
                'message' => 'El código usado ya existe.'
            ),
        ),
        'rubro_id' => array(
            'rule' => 'notEmpty',
            'allowEmpty' => false,
            'message' => 'Elija un rubro.'
        )
    );
 
    public function existeOtro() {
        //Debugger::dump($this->data->Rubrubro);
        // busca que no haya otro id con el mismo campo codigo
        $filtro_dup = array('Subrubro.id !=' => $this->id,             
                            'Subrubro.codigo' => $this->data['Subrubro']['codigo']);
        $cantExistentes = $this->find('count', array(
            'conditions' => $filtro_dup,
            'recursive' => -1
        ));
        return $cantExistentes == 0;
    }    
 
 
}
?>